Навчіться ефективно працювати з подіями в JavaScript
Вступ до прослуховування подій
Прослуховування подій (Event Listeners) в JavaScript дозволяє вашому коду реагувати на дії користувача, такі як кліки мишею, натискання клавіш, переміщення курсора та багато іншого.
Це один з найважливіших аспектів веб-розробки, оскільки дозволяє створювати інтерактивні та динамічні веб-сайти.
Основи прослуховування подій
Метод addEventListener()
Основним способом додавання обробників подій є метод addEventListener().
// Додавання обробника події кліку const button = document.getElementById('myButton');
button.addEventListener('click', function() { console.log('Кнопка була натиснута!');
});
Види подій
Існує багато типів подій, з якими можна працювати:
Події миші: click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout
Події клавіатури: keydown, keyup, keypress
Події форми: submit, change, focus, blur, input
Події вікна: load, resize, scroll
Інші події: touchstart, touchend, drag, drop
Об'єкт події
Коли відбувається подія, браузер передає об'єкт події до обробника, який містить інформацію про подію.
const button = document.getElementById('myButton');
button.addEventListener('click', function(event) { // event - об'єкт події console.log(event.type); // 'click' console.log(event.target); // елемент, на якому відбулася подія
});
Фази подій: сплив і занурення
Події в DOM мають три фази поширення:
Фаза занурення (Capturing)
Подія поширюється від кореневого елемента до цільового елемента
Цільова фаза (Target)
Подія досягає цільового елемента
Фаза спливу (Bubbling)
Подія поширюється від цільового елемента назад до кореневого
Window (занурення)
↓
Document (занурення)
↓
HTML (занурення)
↓
Body (занурення)
↓
Div (занурення)
↓
Button (ціль)
↑
Div (сплив)
↑
Body (сплив)
↑
HTML (сплив)
↑
Document (сплив)
↑
Window (сплив)
Контроль фаз подій
За замовчуванням обробники подій виконуються на фазі спливу. Але ви можете вказати, на якій фазі виконувати обробник:
Перевірте свої знання з прослуховування подій в JavaScript. У вас є 5 хвилин на проходження тесту.
02:03
Питання 1: Який метод використовується для додавання обробника подій?
attachEvent()
addEventListener()
addEvent()
onEvent()
Питання 2: Яка подія відбувається при натисканні кнопки миші?
mouseover
mouseup
mousedown
mousemove
Питання 3: Як видалити обробник події, доданий за допомогою addEventListener()?
removeEvent()
removeEventListener()
detachEvent()
deleteEventListener()
Питання 4: Яка подія відбувається при зміні значення елемента форми?
input
focus
change
blur
Питання 5: Як отримати доступ до елемента, на якому відбулася подія?
event.currentTarget
event.target
event.source
event.element
Питання 6: Яка фаза події відбувається першою?
Фаза занурення (Capturing)
Цільова фаза (Target)
Фаза спливу (Bubbling)
Всі фази відбуваються одночасно
Питання 7: Як зупинити поширення події до інших елементів?
event.preventDefault()
event.stopPropagation()
event.stop()
event.cancelBubble()
Ви набрали 3 з 7 (43%). Спробуйте ще раз!
Задачі для самостійного розв'язання
Спробуйте самостійно вирішити наступні задачі для закріплення знань про прослуховування подій.
Задача 1: Створіть кнопку, яка змінює колір фону сторінки при кожному кліку
Кожен клік повинен генерувати випадковий колір фону.
Задача 2: Створіть форму з двома полями введення та кнопкою
При натисканні кнопки перевіряйте, чи поля не порожні, і виводьте повідомлення про помилку, якщо вони порожні.
Задача 3: Реалізуйте drag & drop функціонал
Створіть елемент, який можна перетягувати по сторінці за допомогою миші.
Задача 4: Створіть таймер зворотного відліку
Додайте поле для введення часу та кнопку запуску. Таймер повинен відображати час, що залишився, та видавати звуковий сигнал після завершення.
Задача 5: Реалізуйте просту гру "Вгадай число"
Програма генерує випадкове число, а користувач намагається його вгадати. Після кожної спроби програма повідомляє, чи загадане число більше чи менше введеного.